import type { GlobalState } from './types'
import { defineStore } from 'pinia'
import { store } from '@/store'

export const useGlobalStore = defineStore('global', {
  state: (): GlobalState => ({
    token: '',
    userInfo: null,
  }),
  getters: {
    getToken(): string {
      return this.token
    },
    getUserInfo(): GlobalState['userInfo'] {
      return this.userInfo
    },
  },
  actions: {
    setToken(token: string) {
      this.token = token
    },
    clearToken() {
      this.token = ''
    },
    setUserInfo(userInfo: GlobalState['userInfo']) {
      this.userInfo = userInfo
    },
    clearUserInfo() {
      this.userInfo = null
    }
  },

  // persist: [
  //   {
  //     key: 'globalState',
  //     storage: window.sessionStorage,
  //     // 用于指定 state 中哪些数据需要被持久化。[] 表示不持久化任何状态，undefined 或 null 表示持久化整个 state。
  //     paths: undefined, // 或者写 ["token", "userInfo"]
  //   },
  // ] as any,
  persist: {
    key: 'globalState',
    storage: localStorage,
    // 不写 paths 就是“全量”；或者显式写：
    // paths: ['token', 'userInfo'],
  },
})

// Vue 组件外使用
export function useGlobalStoreWithOut() {
  return useGlobalStore(store)
}
